Problématique
Comment etre renseigné d'un intru quelque part ?
Cahier des charges
Explication du projet :
Remote Alarm est un projet d'alarme commandée à distance.
- Module sonore integré au boitier d'alarme
- Affichage du statut de l'alarme sur le boitier
- Affichage du statut sur la Remote
- Module sonore integré à la remote
Fonctionnement, répartition des tâches
2 programmes diférents:
- Programme principal du boitier - Hugo Quentel
- Programme secondaire de la remote - Hugo Quentel & Maryinho Evrad
le code et ses explications
Programme principal :
"""
Imports
"""
from microbit import *
from micro_grove import bip
from micro_grove import mesure_temps_A_R
import radio
import music
import neopixel
"""
Functions
"""
#Affiche la croix
def displayCross():
for x in range(5):
for y in range(5):
display.set_pixel(x,y,0)
display.set_pixel(0,0,9)
display.set_pixel(1,1,9)
display.set_pixel(2,2,9)
display.set_pixel(3,3,9)
display.set_pixel(4,4,9)
display.set_pixel(0,4,9)
display.set_pixel(1,3,9)
display.set_pixel(3,1,9)
display.set_pixel(4,0,9)
#Affiche le "tick"
def displayTick():
for x in range(5):
for y in range(5):
display.set_pixel(x,y,0)
display.set_pixel(0,2,9)
display.set_pixel(1,3,9)
display.set_pixel(2,2,9)
display.set_pixel(3,1,9)
display.set_pixel(4,0,9)
#Récupère les inforations de la remote
def updateRemote():
global enable
state = radio.receive()
if state == "t":
enable = True
displayTick()
elif state == "f":
enable = False
displayCross()
state = "null"
"""
Initialisation
"""
enable = True
#setup de la lisaison radio
radio.config(channel=16)
radio.on()
displayTick()
"""
Boucle Principale
"""
while True:
updateRemote()
"""
Distance
"""
t = mesure_temps_A_R(pin1) # Take distance
distance = t * 0.034328 / 2 # To cm
distance = round(distance) # Round Distance
updateRemote()
"""
Check d'un obstacle
"""
if distance < 100 and enable:
#envoie de l'information d'un obstacle à la remote
radio.send("i")
for freq in range(880, 1760, 16):
music.pitch(freq, 6)
sleep(500)
updateRemote()
Programme secondaire :
"""
Imports
"""
import music
from microbit import *
import radio
from music import *
"""
Définition des fonctions
"""
#recieve : s'occupe de recevoir un signal d'un obstacle du boitier principale
def receive():
state = radio.receive()
if state =="i": #Check si le signal contient le packet i ( obstacle detecté )
display.show(Image.ANGRY)
for freq in range(880, 1760, 16):
music.pitch(freq, 5 )
if enable:
display.show(Image.YES)
else:
display.show(Image.NO)
state = "null"
"""
Initialisation
"""
radio.config(channel=16) #Ini de la radio
radio.on()
enable = True
"""
Boucle principale
"""
while True:
receive() #Mise à jours de la detection obstacle
if button_a.was_pressed():
"""
START ALARM
"""
radio.send("t") #Envoie au boitier principale du packet t ( allumer l'alarme )
enable = True
for y in range(5):
for x in range(5):
display.set_pixel(x,y,0)
display.set_pixel(1,4,9)
display.set_pixel(0,3,9)
display.set_pixel(2,3,9)
display.set_pixel(3,2,9)
display.set_pixel(4,1,9)
if button_b.was_pressed():
"""
StOP ALARM
"""
radio.send("f") #Envoie au boitier principale du packet f ( désactive l'alarme )
enable = False
for y in range(5):
for x in range(5):
display.set_pixel(x,y,0)
for i in range(3):
display.set_pixel(1,1,9)
display.set_pixel(0,0,6)
display.set_pixel(2,2,9)
display.set_pixel(3,3,6)
display.set_pixel(4,4,9)
display.set_pixel(0,4,6)
display.set_pixel(1,3,9)
display.set_pixel(3,1,6)
display.set_pixel(4,0,9)
sleep(100)
Conclusion (ressenti et problèmes rencontrés)
Ce projet aura été intéressant à faire du fait de ses 2 programmes distincts.
L'organisation n'a donc pas été compliquée,chacun sur un projet.
Il y aura eu quelque problèmes malgré tout avec l'incompatibilité du bandeau led
sur le boitier d'alarme. Ce projet garde cependant de nombreuses possibilités
d'évolution avec une connection bluetooth à son téléphone ou encore des
améliorations dans l'affichage et un choix des alertes sonores